package cc.iteachyou.template.tools;





import java.text.ParseException;
import java.text.SimpleDateFormat;

import java.util.Calendar;
import java.util.Date;


/**
 * @author duanbowei123
 * @Date:2023/7/6
 * @Description:
 * @version：1.0
 **/

public class DateUtil  {

    /**
     * 获取当前时间的时间戳
     *
     * @return
     */
    public static long current() {
        return System.currentTimeMillis();
    }



    /**
     * 获取当前时间 格式 yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String dateTimeNow() {
        return format(new Date(),"yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 获取当前时间 格式 yyyy-MM-dd
     * @return
     */
    public static String dateNow() {
        return format(new Date(),"yyyy-MM-dd");
    }

    /**
     * 指定时间格式
     * @param date  时间
     * @param format 格式 如：yyyy-MM-dd
     * @return
     */
    public static String format(Date date, String format) {
        if (date == null || StringUtil.isBlank(format)) {
            return null;
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);

        return simpleDateFormat.format(date);
    }

    /**
     * 获取指定时间的年份
     * @param date
     * @return
     */
    public static Integer year(Date date){
        if (date == null){
            return null;
        }
        Calendar calendar = CalendarUtil.calendar(date);
        return calendar.get(Calendar.YEAR);
    }

    /**
     * 获取指定时间月份
     * @param date
     * @return
     */
    public static Integer month(Date date){
        if (date == null){
            return null;
        }
        Calendar calendar = CalendarUtil.calendar(date);
        return calendar.get(Calendar.MONTH)+1;
    }

    /**
     * 获取指定时间的日 该月的第几日
     * @param date
     * @return
     */
    public static Integer day(Date date){
        if (date == null){
            return null;
        }
        Calendar calendar = CalendarUtil.calendar(date);
        return calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 将字符串转换Date  需要给出时间和格式
     * @param date
     * @param format
     * @return
     */
    public static Date parse(String date,String format){
        if (StringUtil.isBlank(date)|| StringUtil.isBlank(format)){
            return null;
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        try {
            Date parse = dateFormat.parse(date);
            return parse;
        } catch (ParseException e) {
            throw new RuntimeException("日期格式转换错误！");
        }
    }
}
